package com.learn.service.proxy;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

/**
 * jdk动态代理，是基于接口实现，因此被代理类（委托类）必须实现了某个接口，且只有该接口中的方法能被代理
 * @author huayun-win10
 *
 */
public class BookManagerProxy implements InvocationHandler {
	private Object target;

	public Object bind(Object target) {
		this.target = target;
		return Proxy.newProxyInstance(target.getClass().getClassLoader(),
				target.getClass().getInterfaces(), this);
	}

	@Override
	public Object invoke(Object proxy, Method method, Object[] args)
			throws Throwable {
		Object result = null;
		System.out.println("前置处理");
		result = method.invoke(this.target, args);
		System.out.println("后置处理");
		return result;
	}

}
